const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const session = require('express-session');
const dateFormat = require('dateformat');
const template = require('art-template');
const config = require('config');

// 向模板内部导入dateformat变量
template.defaults.imports.dateFormat = dateFormat;
const app = express();

// session的使用
app.use(session({
    secret:'secret key',
    saveUninitialized:false,
    // 设置cookie的过期时间
    cookie:{
        maxAge:24 * 60 * 60 * 1000
    }
}));
// 处理post请求参数
app.use(bodyParser.urlencoded({extended:false}));

// 数据库连接
require('./model/connect');

// 模板配置项
// 告知模板位置
app.set('views',path.join(__dirname,'views'));
// 告知模板后缀
app.set('view engine','art');
// 告知用什么模板，渲染什么后缀文件
app.engine('art',require('express-art-template'));

// 开放静态资源文件
app.use(express.static(path.join(__dirname,'public')));

// 引入路由模块
const home = require('./route/home');
const admin = require('./route/admin');

// 拦截请求，判断登录状态
app.use('/admin',require('./middleware/loginGuard'));

// 为路由匹配请求路径
app.use('/home',home);
app.use('/admin',admin);

// console.log(config.get('title'));
// 获取系统环境变量
// console.log(process.env.NODE_ENV);
if(process.env.NODE_ENV == 'develpment'){
    console.log('当前是开发环境');
}else{
    console.log('当前是生产环境');
}
//错误处理中间件 
app.use((err,req,res,next)=>{
    const result = JSON.parse(err);
    let params = [];
    for(let attr in result){
        if(attr != result){
            params.push(attr + '=' + result[attr]);
        }
    }
    res.redirect(`${result.path}?${params.join('&')}`);
})

// 监听端口
app.listen(80);
console.log('服务器创建成功');
